TMS320F28335使用IQmath库 |
您所在的位置:网站首页 › math c语言 › TMS320F28335使用IQmath库 |
简介
1.1 简介
德州仪器公司TMS320C280X系列的IQmath库为C/C++程序收集了高度优化和准确的数学函数库,并精确地在TMS320C280X芯片上将浮点算法转换成定点算法的运算代码。这些函数被经常用在密集的实时计算且运行速度和精度又是至关重要的程序里。使用这些函数你能拥有比使用同等标准的ANSI C语言编写的代码更快的运行速度。此外提供可以使用的高精密功能的TI IQmath库明显缩短你DSP应用开发时间。 安装IQmath 2.1 IQmath的内容TI IQmath库可以同时用于C和C++程序,它包含以下5个部分: 1)IQmath头文件 头文件包括与IQmath库接口所需的定义。C程序使用IQmathLib.h;C++程序同时使用IQmathLib.h和IQmathCPP.h 2)IQmath对象库。该库包含所有的IQmath函数和查找表。该库有两个构建版本: a) IQmath.lib:这个库的可以与定点代码相链接。IQmath.lib库在标准C28x固定点设备上使用。 此库可与C和C++代码一起使用。 b) IQmath_f32.lib:这个库的构建可以与使用--float_support=fpu32构建的代码相链接。在带有FPU的C28X设备上,这对混用IQmath和本地浮点代码很有帮助,就是说可以使用浮点加定点。 FPU:(Float Point Unit,浮点运算单元)FPU是专用于浮点运算的处理器。 3)连接指定文件IQmath.cmd 4) IQmath调试文件GEL:IQmath.gel 5) 例程 2.2 如何安装IQmath库库文件目录:D:\ti\controlSUITE\libs\math\IQmath\v160(参考你安装的ControlSUITE的位置) IQmath 输入/输出系统是典型的32位定点数系统,定点数的Q可在Q1到Q30之间定义,我们也可以使用自定义的 IQ 数据类型,这更方便了开发者在应用程序中定义各种类型的IQmath数据类型。 下表总结了不同 Q 格式的32位定点数的 Range 和 Resolution。典型的Q函数支持Q1到Q30的歌手,但是对于IQNsin,IQNcos,IQNatan2,IQNatan2PU,iqatan等不支持Q30格式,因为这些函数的输入和输出需要在 -Pi ~ Pi 范围中改变。 添加IQmathLib.h,可能需要修改cmd文件,添加IQmath_fpu32.lib(因为我使用的是28335,有fpu),其他的就是在使用IQmath库之前先包含IQmathLib.h头文件。 我的工程文件链接,提取码1234 什么是定点数什么是浮点数参考:https://www.bilibili.com/video/av15622701/ 28335使用fpu:https://zhuanlan.zhihu.com/p/341602336 CCS显示程序运行时长:https://jingyan.baidu.com/article/1612d5009c004ae20e1eee21.html 当然也有C++调用IQmath库的方法,具体可以查看TI官方的手册。 3.4 IQmath函数命名规则数值精度和动态范围的要求将因不同的应用而有很大的差异。IQmath库方便了在定点算法中的程序应用,不用实现确定数字的精度。这个允许工程师用不同的竹子精度检查应用效果并最终确定数字定点的位置。高精度会导致低的动态量程,因此,在设置GLOBAL_Q格式前必须平衡精度和量程的关系。 CASE 1:默认的GLOBAL_Q格式设置为Q24。编辑“IQmathLib.h”头文件,根据需要修改此值,用户可以选择从Q1到Q29作为GLOBAL_Q格式。修改此值意味着所有GLOBAL_Q函数都将使用此Q格式进行输入/输出,除非在源代码中覆盖此符号定义。 模块可能需要不同的精度,然后是系统的其他部分。在这种情况下,我们需要重写在“IQmathLib.h”文件中定义的GLOBAL_Q,并使用本地Q格式。 这可以通过在包含语句之前在模块的源文件中定义GLOBAL_Q常量来很容易地实现 。 IQmath GEL 文件包含GEL功能,这些功能用于帮助在观察窗口查看IQ变量值。而且IQ变量值也可以通过对话窗进行设置。下面介绍在CCS 10中的实现过程,首先我们编译好程序然后进入调试界面,如下图。 然后在出现的菜单中选择 Open GEL Files View 然后出现下面的显示,然后右击屏幕右下角的GEL Files(TMS320C28XX)图表中的空白处,如下图,按图操作。 然后找到你的IQmath.gel的位置,添加就可以了,添加好了如下图。 以上操作是不能在线修改定义的IQ格式变量的值的,可以采用接下来介绍的方法。当然我们需要修改上面给的工程文件的main函数。修改如下。 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); LED_Init(); TIM0_Init(150,500000); // int i; // while(1) // { // for(i=0;iIQ C Support-->Set_IQvalue。IQmath库函数中包含如下几部分: 1) 格式转换函数:atoIQ,IQtoF,IQtolQN等。 2) 算术函数:IQmpy,IQdiv等等 3) 数学函数:IQsqrt, IQisqrt等等 4) 其他:IQabs, IQsat 等等 4.1 常用的变量和字符在各函数的描述说明中采用了如下一些变量或符号:、 计算结果: 5.2.6 IQNmpyl32frac:IQN与LONG相乘结果的小数部分 5.3.6 IQNatan2PU:第四象限定点反正切函数atan(输入标幺值) ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |